package com.dayu.recovery.mapper;

import java.util.List;
import java.util.Map;

import com.dayu.recovery.domain.RecoveryGoods;
import com.dayu.recovery.domain.RecoveryGoodsRes;
import com.dayu.recovery.domain.bo.GoodsQueryBo;
import org.apache.ibatis.annotations.Param;

/**
 * 回收商品管理Mapper接口
 *
 * @author HK
 * @date 2021-04-16
 */
public interface RecoveryGoodsMapper
{
    /**
     * 查询回收商品管理
     *
     * @param goodsId 回收商品管理ID
     * @return 回收商品管理
     */
    RecoveryGoods selectRecoveryGoodsById(String goodsId);

    RecoveryGoods selectRecoveryGoodsBySn(String goodsSn);

    /**
     * 查询回收商品管理列表
     *
     * @param recoveryGoods 回收商品管理
     * @return 回收商品管理集合
     */
    List<RecoveryGoods> selectRecoveryGoodsList(RecoveryGoods recoveryGoods);

    String queryTestName(@Param("goodsId")String goodsId);

    /**
     * 新增回收商品管理
     *
     * @param recoveryGoods 回收商品管理
     */
     void insertRecoveryGoods(RecoveryGoods recoveryGoods);

    /**
     * 修改回收商品管理
     *
     * @param recoveryGoods 回收商品管理
     * @return 结果
     */
    int updateRecoveryGoods(RecoveryGoods recoveryGoods);


    /**
     * 批量删除回收商品管理
     *
     * @param goodsIds 需要删除的数据ID
     * @return 结果
     */
    int deleteRecoveryGoodsByIds(String[] goodsIds);

    /**
     * 批量新增回收商品
     */
    int insertRecoveryGoodsByList(List<RecoveryGoods> list);

    /**
     * 批量修改入库确认状态
     */
    void updateGoodsConfirmStatusByList(List<RecoveryGoods> list);

    /**
     * 批量修改商品状态
     */
    void updateGoodsStatusByList(List<RecoveryGoods> list);

    /**
     * 查询某个仓库 成本和
     * @param recoveryGoods 仓库id
     * @return 成本和
     */
    Map<String, Object> selectStockGoodsPrice(RecoveryGoods recoveryGoods);

    void updateGoodsStockIdAndConfirmStatus(@Param("list")List<String> list, @Param("stockId") Long stockId);

    void editGoodsStatusByList(@Param("list") List<String> goodsIds, @Param("status") Integer status);

    int validGoodsSale(@Param("list") List<String> goodsIds);

    //成色分布
    List<Map<String, Object>> queryFinenessChatData();
    //品牌分布
    List<Map<String, Object>> queryBrandChatData();

    //最近七天成本和销售额
    List<Map<String, Object>> querySaleAndCostChatData();

    List<Map<String, Object>> querySaleAndCostChatDataByTime(@Param("bo") GoodsQueryBo bo);

    //首页统计图
    List<Map<String, Object>> queryIndexData(@Param("bo") GoodsQueryBo bo);
}
